// 模拟数据工具 - src/mock/dataSimulator.js
/**
 * 生成随机经纬度（以中国区域为范围）
 * @returns {Object} 包含lon和lat的坐标对象
 */
function generateRandomCoord() {
  // 中国大致经纬度范围
  const lon = 73 + Math.random() * 60; // 73°E - 135°E
  const lat = 18 + Math.random() * 40; // 18°N - 53°N
  return {
    lon: parseFloat(lon.toFixed(6)),
    lat: parseFloat(lat.toFixed(6))
  };
}

/**
 * 模拟物资库数据请求
 * @param {number} count - 生成的数据条数
 * @returns {Promise} 包含物资库数据的Promise
 */
export function mockMaterialData(count = 20) {
  return new Promise((resolve) => {
    // 模拟网络请求延迟
    setTimeout(() => {
      const data = Array.from({ length: count }, (_, i) => {
        const coord = generateRandomCoord();
        const types = ['医疗物资', '食品储备', '救援设备', '通讯设备', '防护装备'];
        const status = ['正常', '短缺', '充足', '待补充'];

        return {
          id: `material_${i + 1}`,
          name: `${types[Math.floor(Math.random() * types.length)]}仓库_${i + 1}`,
          lon: coord.lon,
          lat: coord.lat,
          alt: Math.floor(Math.random() * 100) + 50, // 海拔
          type: types[Math.floor(Math.random() * types.length)],
          status: status[Math.floor(Math.random() * status.length)],
          quantity: Math.floor(Math.random() * 1000) + 100, // 物资数量
          updateTime: new Date(Date.now() - Math.random() * 86400000 * 7).toISOString(), // 最近更新时间
          contact: `联系人${i + 1}`,
          phone: `13${Math.floor(Math.random() * 100000000).toString().padStart(8, '0')}`
        };
      });

      resolve({
        code: 200,
        message: 'success',
        data: data
      });
    }, 500);
  });
}

/**
 * 模拟监测设备数据请求
 * @param {number} count - 生成的数据条数
 * @returns {Promise} 包含监测设备数据的Promise
 */
export function mockDeviceData(count = 30) {
  return new Promise((resolve) => {
    // 模拟网络请求延迟
    setTimeout(() => {
      const data = Array.from({ length: count }, (_, i) => {
        const coord = generateRandomCoord();
        const deviceTypes = ['气象监测', '水质监测', '空气质量', '温湿度传感器', '位移监测'];
        const onlineStatus = ['在线', '离线', '故障', '维护中'];

        // 生成随机监测值
        const values = {
          '气象监测': { temperature: (10 + Math.random() * 30).toFixed(1), humidity: (30 + Math.random() * 60).toFixed(1) },
          '水质监测': { ph: (6.5 + Math.random() * 2).toFixed(1), turbidity: (0.1 + Math.random() * 5).toFixed(2) },
          '空气质量': { pm25: Math.floor(Math.random() * 150), aqi: Math.floor(Math.random() * 200) },
          '温湿度传感器': { temp: (15 + Math.random() * 25).toFixed(1), humi: (20 + Math.random() * 70).toFixed(1) },
          '位移监测': { x: (Math.random() * 10 - 5).toFixed(2), y: (Math.random() * 10 - 5).toFixed(2) }
        };

        const type = deviceTypes[Math.floor(Math.random() * deviceTypes)];
        return {
          id: `device_${i + 1}`,
          name: `${type}_${i + 1}`,
          lon: coord.lon,
          lat: coord.lat,
          alt: Math.floor(Math.random() * 50) + 20,
          type: type,
          status: onlineStatus[Math.floor(Math.random() * onlineStatus.length)],
          values: values[type], // 设备监测值
          lastReportTime: new Date(Date.now() - Math.random() * 3600000 * 2).toISOString(), // 最近上报时间
          battery: Math.floor(Math.random() * 100), // 电池电量(%)
          signal: Math.floor(Math.random() * 5) + 1 // 信号强度(1-5)
        };
      });

      resolve({
        code: 200,
        message: 'success',
        data: data
      });
    }, 600);
  });
}